package com.stefan.sort;

//对200w 学生的考试成绩排序,分数在0-900之间，分数有2位小数
public class D {
    public static void main(String[] args) {
        //step1 用io流从文件读取200w的成绩到一个数组element，由于成绩有2位小数，则我们*100变成整数
        int[] element = new int[2000000]; //0-200w
        //step2 排序element，这里当然可以用快速和归并 O(nlogn)的时间复杂度，不能用其他的排序O(n^2)-排不出来的。
        //这里类似于统计年龄一样，可以用数组排序，数组是天然有序的，把成绩作为数组的index （这里为什么成绩*100变成
        // 整数的原因）
        //创建一个数组0-90000
        int[] counts = new int[90000];

        for (int i = 0; i < element.length; i++) {
            counts[i]++; //计数 表示当前成绩的有多少，counts[100] = 6, 表示成绩是100的有6个
        }

        for (int i = 0; i < counts.length; i++) {
            if (counts[i] > 0) {
                for (int j = 0; j < counts[i]; j++) {
                    System.out.println((double) i/100);
                }
            }
        }
    }
}
